#ifndef __SCK_STREAM_H__
#define __SCK_STREAM_H__

#include "wx/stream.h"

#if wxUSE_SOCKETS && wxUSE_STREAMS

#include "wx/socket.h"

class wxSocketOutputStream : public wxOutputStream {
  public:
    wxSocketOutputStream( wxSocketBase& s );
    virtual ~wxSocketOutputStream();
    wxFileOffset SeekO( wxFileOffset ( pos ), wxSeekMode ( mode ) ) { return -1; }
    wxFileOffset TellO() const{ return -1; }
  protected:
    wxSocketBase *m_o_socket;
    size_t OnSysWrite( const void *buffer, size_t bufsize );
    DECLARE_NO_COPY_CLASS( wxSocketOutputStream )
};

class wxSocketInputStream : public wxInputStream {
  public:
    wxSocketInputStream( wxSocketBase& s );
    virtual ~wxSocketInputStream();
    wxFileOffset SeekI( wxFileOffset ( pos ), wxSeekMode ( mode ) ) { return -1; }
    wxFileOffset TellI() const{ return -1; }
  protected:
    wxSocketBase *m_i_socket;
    size_t OnSysRead( void *buffer, size_t bufsize );
    DECLARE_NO_COPY_CLASS( wxSocketInputStream )
};

class wxSocketStream : public wxSocketInputStream,
  public wxSocketOutputStream {
  public:
    wxSocketStream( wxSocketBase& s );
    virtual ~wxSocketStream();
    DECLARE_NO_COPY_CLASS( wxSocketStream )
};

#endif

#endif
